home *** CD-ROM | disk | FTP | other *** search
- DATA SEGMENT PUBLIC 'DATA'
- TITLE__ DB 'TITLE: DOS KEYBOARD INPUT ROUTINES FOR MS FORTRAN'
- COPY_R DB ' (C) John R. Petrocelli'
- DB ' Schenectady,NY '
- DB ' 01/13/86 '
- TO_MANY DB 0DH,0AH
- DB 'BUFFERED KEYBOARD INPUT REQUEST OUT OF RANGE(1 TO 80 CHRS)'
- DB 0DH,0AH,'$'
- BUF_GET DB ?
- BUF_IN DB ?
- BUF_MSG DB 80 DUP(?)
- BUF_MAX DB ?
- DATA ENDS
- DGROUP GROUP DATA
- CODE SEGMENT 'CODE'
- ASSUME CS:CODE,DS:DGROUP,SS:DGROUP
- PUBLIC KEYBUF
- KEYBUF PROC FAR
- PUSH BP
- PUSH AX
- PUSH BX
- PUSH CX
- PUSH DX
- PUSH DS
- MOV BP,SP
- LES BX,DWORD PTR [BP+24]
- MOV AL,BYTE PTR [BX]
- CMP AL,80
- JA BAD_BUF
- CMP AL,0
- JLE BAD_BUF
- MOV BUF_GET,AL
- LEA DX,BUF_GET
- MOV AX,0A00H
- INT 21H
- LES BX,DWORD PTR [BP+20]
- MOV CH,00
- MOV CL,BUF_IN
- MOV [BX],CX
- LEA BX,BUF_MSG
- MOV SI,BX
- LES BX,DWORD PTR [BP+16]
- MOV DI,BX
- CLD
- REPZ MOVSB
- BYE_KEY:
- POP DS
- POP DX
- POP CX
- POP BX
- POP AX
- POP BP
- RET 12
- BAD_BUF:
- LEA DX,TO_MANY
- MOV AX,0900H
- INT 21H
- LES BX,DWORD PTR [BP+20]
- MOV BYTE PTR [BX],-1
- JMP BYE_KEY
- KEYBUF ENDP
- PUBLIC KEYIN
- KEYIN PROC FAR
- PUSH BP
- PUSH AX
- PUSH BX
- MOV BP,SP
- MOV AX,0C07H
- INT 21H
- LES BX,DWORD PTR [BP+10]
- MOV [BX],AL
- POP BX
- POP AX
- POP BP
- RET 4
- KEYIN ENDP
- CODE ENDS
- END